
https://leetcode.cn/problems/hPov7L/description/
///**
// * Definition for a binary tree node.
// * struct TreeNode {
// *     int val;
// *     TreeNode *left;
// *     TreeNode *right;
// *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
// *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
// *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
// * };
// */
//class Solution {
//public:
//    vector<int> largestValues(TreeNode* root) {
//        vector<int> v;
//        if (!root) {
//            return v;
//        }
//
//        queue<TreeNode*> qu;
//        qu.push(root);
//        while (!qu.empty()) {
//            int sz = qu.size();
//            int max1 = INT_MIN;
//            while (sz--) {
//                TreeNode* node = qu.front();
//                qu.pop();
//                max1 = max(max1, node->val);
//                if (node->left) {
//                    qu.push(node->left);
//                }
//                if (node->right) {
//                    qu.push(node->right);
//                }
//            }
//            v.push_back(max1);
//        }
//        return v;
//    }
//};



https://leetcode.cn/problems/maximum-width-of-binary-tree/description/
///**
// * Definition for a binary tree node.
// * struct TreeNode {
// *     int val;
// *     TreeNode *left;
// *     TreeNode *right;
// *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
// *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
// *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
// * };
// */
//class Solution {
//public:
//    int widthOfBinaryTree(TreeNode* root) {
//        vector<pair<TreeNode*, unsigned int>> vs;
//        vs.push_back({ root,1 });
//        unsigned int ret = 0;
//
//        while (!vs.empty()) {
//            auto& [x, y] = vs[0];
//            auto& [x1, y1] = vs.back();
//
//            ret = max(ret, y1 - y + 1);
//            vector<pair<TreeNode*, unsigned int>>  tmp;
//            for (auto& [x, y] : vs) {
//                if (x->left) {
//                    tmp.push_back({ x->left,y * 2 });
//                }
//                if (x->right) {
//                    tmp.push_back({ x->right,y * 2 + 1 });
//                }
//            }
//            vs = tmp;
//        }
//        return ret;
//    }
//};